import pandas as pd
import matplotlib.pyplot as plt
import os

# 设置中文显示和负号显示
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 读取Excel文件
df = pd.read_excel(r'd:\组队你组不组\team-up-do-you-want-to-group1\project\练习一\FhjlViewDD.xlsx')

# 设置列名
date_column = '创建时间'
quantity_column = '净重'
customer_column = '客户'

# 筛选6月份数据
df[date_column] = pd.to_datetime(df[date_column])
june_data = df[df[date_column].dt.month == 6]

# 按客户统计6月份货运总量并降序排序
customer_stats = june_data.groupby(customer_column)[quantity_column].sum().sort_values(ascending=False)

# 确保输出目录存在
output_dir = r'd:\组队你组不组\team-up-do-you-want-to-group1\project\练习一\cd-李宛津'
os.makedirs(output_dir, exist_ok=True)

# 将结果保存到CSV文件
output_path = os.path.join(output_dir, '6月份客户货运需求量统计.csv')
customer_stats.to_csv(output_path, encoding='utf-8-sig')

# 生成所有客户货运量统计图(已按从大到小排序)
plt.figure(figsize=(16, 8))
if len(customer_stats) > 15:  # 横向柱状图
    customer_stats.sort_values().plot(kind='barh', color='skyblue')  # sort_values()确保降序显示
    plt.ylabel('客户名称', fontsize=12)
    plt.xlabel('货运量(吨)', fontsize=12)
else:  # 纵向柱状图
    customer_stats.plot(kind='bar', color='skyblue')  # 已按降序排序
    plt.xlabel('客户名称', fontsize=12)
    plt.ylabel('货运量(吨)', fontsize=12)
    plt.xticks(rotation=45, ha='right')

plt.title('6月份客户货运需求量统计', fontsize=14)
plt.tight_layout()

# 保存图表
chart_path = os.path.join(output_dir, '6月份客户货运需求量统计.png')
plt.savefig(chart_path, dpi=300, bbox_inches='tight')
plt.close()

print(f'统计结果已保存到: {output_path}')
print(f'可视化图表已保存到: {chart_path}')
print(f'统计结果已保存到: {output_path}')